A debugger is an important tool in the development of software applications. A debugger can be particularly useful in software development that uses dynamic, interpreted, or otherwise runtime checked languages, like JavaScript, because programming errors in such languages may only be discoverable at run time.
Debuggers are often included as part of a packaged development environment that includes editing, building, launching, and profiling functionality for application development. Typically a debugger operates as a client and the application operates as a server. The debugger connects to the application after the application has launched in an environment. The debugger sends commands and requests to the application and receives data associated with the operation of the application. Such commands can include commands to run the application until completion or an error, to set a breakpoint, to run the application until an event (e.g., a breakpoint) occurs, and to run the application for one or more instruction steps. Requests can include requests to inspect the application stack, heap, and current property values.